SPDX-FileCopyrightText: 2020 Camille Salignon & Spyridon Kellergis SPDX-FileCopyrightText: 2024 AlICe laboratory https://alicelab.be
SPDX-License-Identifier: GPL-3.0-or-later
import bpy
import random as rand
from random import randomdef nettoyage():
    bpy.ops.object.select_all(action="SELECT")
    bpy.ops.object.delete(use_global=False)
    bpy.ops.outliner.orphans_purge()
nettoyage()
for i in range(1):initialised lists that will include vertices for
    list1 = []
    list2 = []created initial vertex
    initial_point_0 = [random(), random(), 0]
    initial_point_1 = [random(), random(), 1]created tuple object from list object
    vertex_0 = tuple(initial_point_0)
    vertex_1 = tuple(initial_point_1)
    list1.append(vertex_0)
    list2.append(vertex_1)specify how much to add
    adding_x = 0.1
    adding_y = rand.uniform(0, 0.4)
    counter = 0
    print(initial_point_0)
    print("initial_point_0[1]")
    print(initial_point_0[2])
    for i in range(18):
        my_number = rand.choice([-1, 1])
        adding_y1 = rand.uniform(0, 0.4)
        adding_y2 = rand.uniform(0, 0.4)
        print("my number")
        print(my_number)
        if counter % 2 == 0:
            initial_point_0[0] = initial_point_0[0] + my_number * adding_x
            initial_point_1[0] = initial_point_1[0] + my_number * adding_xcheck if point on plane 0 is out of bounds out of bounds
            if (
                initial_point_0[0] > 1
                or initial_point_1[0] > 1
                or initial_point_0[0] < 0
                or initial_point_1[0] < 0
            ):
                initial_point_0[0] = initial_point_0[0] - 2 * my_number * adding_x
                initial_point_1[0] = initial_point_1[0] - 2 * my_number * adding_xcheck if point on plane 1 is out of bounds outof bounds
elif (initial_point_1[0]>1 or initial_point_1[0]<0): initial_point_1[0] = initial_point_1[0] - 2my_numberadding_x
            vertex_0 = tuple(initial_point_0)
            vertex_1 = tuple(initial_point_1)
            list1.append(vertex_0)
            list2.append(vertex_1)
        else:
            initial_point_0[1] = initial_point_0[1] + my_number * adding_y1
            initial_point_1[1] = initial_point_1[1] + my_number * adding_y2
            if (
                initial_point_0[1] > 1
                or initial_point_1[1] > 1
                or initial_point_0[1] < 0
                or initial_point_1[1] < 0
            ):
                initial_point_0[1] = initial_point_0[1] - 2 * my_number * adding_y1
                initial_point_1[1] = initial_point_1[1] - 2 * my_number * adding_y2check if point on plane 1 is out of bounds outof bounds
elif (initial_point_1[1]>1 or initial_point_1[1]<0): initial_point_1[1] = initial_point_1[1] - 2my_numberadding_y
            vertex_0 = tuple(initial_point_0)
            vertex_1 = tuple(initial_point_1)
            list1.append(vertex_0)
            list2.append(vertex_1)
        counter = counter + 1
    vertices = list1 + list2
    print("vertices")
    print(vertices)
    print(len(list1))
    print(len(list2))
    print(len(vertices))
    edges = []
    faces = []
    length = len(vertices) // 2
    print(length)
    for i in range(length - 1):
        face = (i, i + 1, i + length + 1, i + length)
        faces.append(face)
    move_vertex_by = 0
    for j in range(4):
        move_vertex_by = rand.uniform(0, 0.5)  # move_vertex_by*0.2create vertex lists 3 more times
        vertices_list = []
        for k in range(len(vertices)):
            vertex_list = list(vertices[k])
            vertex_list[0] = vertex_list[0] + move_vertex_by
            vertex_list[1] = vertex_list[1] + move_vertex_by
            vertex_tuple = tuple(vertex_list)
            vertices_list.append(vertex_tuple)draw
        new_mesh = bpy.data.meshes.new("new_mesh")
        new_mesh.from_pydata(vertices_list, edges, faces)
        new_mesh.update()make object from mesh
        new_object = bpy.data.objects.new("new_object", new_mesh)make collection
        new_collection = bpy.data.collections.new("new_collection")
        bpy.context.scene.collection.children.link(new_collection)add object to scene collection
        new_collection.objects.link(new_object)draw
new_mesh = bpy.data.meshes.new("new_mesh")
new_mesh.from_pydata(vertices, edges, faces)
new_mesh.update()make object from mesh
new_object = bpy.data.objects.new("new_object", new_mesh)make collection
new_collection = bpy.data.collections.new("new_collection")
bpy.context.scene.collection.children.link(new_collection)add object to scene collection
new_collection.objects.link(new_object)